/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gob.cgr.sgrh.ejb.entidad;

import java.io.Serializable;
import java.util.List;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author MICROSOF
 */
@Entity
@Table(name = "ambito")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Ambito.findAll", query = "SELECT a FROM Ambito a"),
    @NamedQuery(name = "Ambito.findByIdAmbito", query = "SELECT a FROM Ambito a WHERE a.idAmbito = :idAmbito"),
    @NamedQuery(name = "Ambito.findByAmbNumero", query = "SELECT a FROM Ambito a WHERE a.ambNumero = :ambNumero"),
    @NamedQuery(name = "Ambito.findByAmbTipo", query = "SELECT a FROM Ambito a WHERE a.ambTipo = :ambTipo"),
    @NamedQuery(name = "Ambito.findByAmbDescripcion", query = "SELECT a FROM Ambito a WHERE a.ambDescripcion = :ambDescripcion"),
    @NamedQuery(name = "Ambito.findByPdr", query = "SELECT a FROM Ambito a WHERE a.ambPadre = :ambPdr")})
public class Ambito implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "ID_AMBITO")
    private Integer idAmbito;
    @Size(max = 20)
    @Column(name = "AMB_NUMERO")
    private String ambNumero;
    @Column(name = "AMB_TIPO")
    private Character ambTipo;
    @Size(max = 255)
    @Column(name = "AMB_DESCRIPCION")
    private String ambDescripcion;
    @OneToMany(mappedBy = "ambPadre")
    private List<Ambito> ambitoList;
    @JoinColumn(name = "AMB_PADRE", referencedColumnName = "ID_AMBITO")
    @ManyToOne
    private Ambito ambPadre;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "lugarNacimiento")
    private List<Persona> personaList;

    public Ambito() {
    }

    public Ambito(Integer idAmbito) {
        this.idAmbito = idAmbito;
    }

    public Integer getIdAmbito() {
        return idAmbito;
    }

    public void setIdAmbito(Integer idAmbito) {
        this.idAmbito = idAmbito;
    }

    public String getAmbNumero() {
        return ambNumero;
    }

    public void setAmbNumero(String ambNumero) {
        this.ambNumero = ambNumero;
    }

    public Character getAmbTipo() {
        return ambTipo;
    }

    public void setAmbTipo(Character ambTipo) {
        this.ambTipo = ambTipo;
    }

    public String getAmbDescripcion() {
        return ambDescripcion;
    }

    public void setAmbDescripcion(String ambDescripcion) {
        this.ambDescripcion = ambDescripcion;
    }

    @XmlTransient
    public List<Ambito> getAmbitoList() {
        return ambitoList;
    }

    public void setAmbitoList(List<Ambito> ambitoList) {
        this.ambitoList = ambitoList;
    }

    public Ambito getAmbPadre() {
        return ambPadre;
    }

    public void setAmbPadre(Ambito ambPadre) {
        this.ambPadre = ambPadre;
    }

    @XmlTransient
    public List<Persona> getPersonaList() {
        return personaList;
    }

    public void setPersonaList(List<Persona> personaList) {
        this.personaList = personaList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idAmbito != null ? idAmbito.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Ambito)) {
            return false;
        }
        Ambito other = (Ambito) object;
        if ((this.idAmbito == null && other.idAmbito != null) || (this.idAmbito != null && !this.idAmbito.equals(other.idAmbito))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "gob.cgr.sgrh.ejb.entidad.Ambito[ idAmbito=" + idAmbito + " ]";
    }
    
}
